package com.estacionamientos

import org.codehaus.groovy.grails.plugins.springsecurity.GormUserDetailsService
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices
import org.springframework.transaction.annotation.Transactional

class AbstractUsuarioService extends GormUserDetailsService {

    static transactional = false
	def myPasswordEncoder
	def TokenBasedRememberMeServices rememberMeServices
	EmailService emailService
    
	@Transactional
	def saveMethod(usuario) {
		boolean esCreacion = usuario.id == null;
		if(esCreacion){
			usuario.setEnabled false
			usuario.setPassword(myPasswordEncoder.encodePassword(usuario.getPassword()))
		}		
		usuario.save()
		
		if(esCreacion){
			emailService.sendEmail usuario.getMail(), "chupala", "<a href='http://localhost:8080/estacionamientos/confirm/index?token="+this.encodedToken(usuario)+"'>registrar</a>";
		}
		return usuario
    }
	
	
	
	protected String encodedToken(usuario){
		String [] parametros = [usuario.getUsername(),usuario.getPassword()]
		return rememberMeServices.encodeCookie(parametros)
	}
	
	def getUsuarioBy(String userName, String password){
		def c = AbstractUsuario.createCriteria();
		AbstractUsuario usuario = c.get {
			and{
				eq "username",userName
				eq "password",password				
			}	
		}
		return usuario;
	}	
}
